import java.util.*;

class  A<E extends Comparable<E>> {

 public Object[]array=new Object[10];

    public void MySort(E[] obj) {
        for (int i = 0; i < obj.length-1 ; i++) {
            for (int j = 0; j < obj.length-1-i; j++) {
                //比较方法
               if (obj[j].compareTo(obj[j+1])>0) {
                   E tmp=obj[j];
                   obj[j]=obj[j+1];
                   obj[j+1]=tmp;
               }
            }
        }
    }
}
class B {
    public static  <E extends Comparable<E>> E[] MySort1(E[] obj) {
        for (int i = 0; i < obj.length - 1; i++) {
            for (int j = 0; j < obj.length - 1 - i; j++) {
                //比较方法
                if (obj[j].compareTo(obj[j + 1]) > 0) {
                    E tmp = obj[j];
                    obj[j] = obj[j + 1];
                    obj[j + 1] = tmp;
                }
            }
        }
        return obj;
    }
    public static<E extends  Comparable<E>> void Mysort3(E[][] obj) {
        for (int i = 0; i < obj.length; i++) {
            for (int j = 0; j <obj[i].length ; j++) {
                System.out.print(obj[i][j]+" ");
            }
            System.out.println();
        }
    }
}
public class Test {

    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int p=nums1.length-1;
        while (m!=0&&n!=0) {
            if (nums1[m-1]<nums2[n-1]) {
                nums1[p]=nums2[n-1];
                n--;
                p--;
            }else {
                nums1[p]=nums1[m-1];
                m--;
                p--;
            }
        }
        if (n==0) {
            return;
        }
        while (n!=0) {
            nums1[p]=nums2[n-1];
            n--;
            p--;
        }
    }
    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> array=new ArrayList<>();
        int n=numRows;
        for (int i = 0; i <n ; i++) {
            array.add(new ArrayList<>());
        }
        for (int i = 0; i < n; i++) {
            array.get(i).add(1);
            for (int j = 1; j < i; j++) {
                int p1=array.get(i-1).get(j);
                int p2=array.get(i-1).get(j-1);
                array.get(i).add(p1+p2);
            }
                if (i>=1) {
                    array.get(i).add(1);
                }
        }
return array;
    }

    public static void main(String[] args) {
        int[]array1={2,0};
        int[]array2={1};

        merge(array1,1,array2,1);
        System.out.println(Arrays.toString(array1));
    }
    public static void main2(String[] args) {
        System.out.println(Test.generate(4));

    }
    public static void main1(String[] args) {

        Integer[][]p2= {{1, 2, 3, 4, 5, 6},{1, 2, 3, 4, 5, 6}};
        B.<Integer>Mysort3(p2);
        System.out.println();
       // Integer[] p1={9,8,7,6,5,4,3,2,1,0};
//        A <Integer>a=new A<>();
//       a.MySort(p1);
//        System.out.println(Arrays.toString(p1));
//        A<String>b=new A<>();
//        String[] p={"zzz","ooo","eee"};
//        b.MySort(p);
//        System.out.println(Arrays.toString(p));
//        B b1=new B();
//        Integer[] p5=b1.<Integer>MySort1(p1);
        //Integer[]p5=B.MySort1(p1);
      //  System.out.println(Arrays.toString(p5));
     //   System.out.println(Arrays.toString(arr));
    }
}